iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 17
1
自我挑戰組

初心者學C#系列 第 17

Day 17:C#的陣列(上)ᕕ( ᐛ )ᕗ

  • 分享至 

  • xImage
  •  

※以下內容皆是新手撰寫,內容可能不完全正確

已經寫到30天文的下半部分了,竟然還沒半路斷掉(ˊˇˋ) 蒸蚌。想要把學到的東西徹底變成自己的,果真要自己想不一樣的東西來練習ㄦ

今天要談的是個頗為重要(目前好像還沒有什麼是不重要的ˊˋ)的東西: 陣列(arrays) 。陣列裡邊存著一堆照順序排且統一行別的元素,可以想成是一堆相同型別的變數相繼地存在記憶體中的某個角落。
陣列裡的東西不用像變數一樣一個個宣告,而是直接把值一個個用逗點隔開,並且每個值都依序編號(從0開始算,[0]、[1]、[2]、到第n號),也是在記憶體裡的排序。每當一個陣列出現,C#的編譯器會先把每個陣列元素一個預設值,視陣列型別而有所不同,像int的預設值是0。

宣告陣列(declaring an array)
C#裡面宣告陣列的格式是這樣的:<資料類型>[ ] <陣列名稱>;
然而,C#當中宣告陣列並不會將其初始化。將陣列初始化便能做給值(assign a value/assign values)的動作。陣列是引用型別,用new做出實例(instance):

double[ ] d = new double[5]; //5代表這個陣列的大小是五個double值

陣列的給值(assigning values to an array)
以下是給陣列值的幾種方法:

double[ ] d = new double[5]; 
d[1] = 94.87; //用索引號碼給值,一號位置變成94.87
int[ ] someNumbers = {10, 64, 73, 45, 38}; //宣告的同時順便給值
int[ ] moreNumbers = new int[3] {42, 21, 35}; //造出陣列順便初始化
int[ ] evenMoreNumbers = new int[ ] {42, 21, 35}; //也可以不要寫出陣列大小

一個陣列變數可以存到另一個陣列變數裡面;兩個變數指的是相同的記憶體位址:

int[ ] moreNumbers = new int[ ] {42, 21, 35};
int[ ] somethingNew = moreNumbers;

使用陣列中的元素(accessing array elements)
把某個陣列中的某元素抓出來,可以在陣列名稱前面冠索引號碼,如下:

int aNumber = someNumbers[4];

之前講過foreach,而這個foreach可以用來把陣列裡的元素都跑一遍。下面是一個用foreach跑陣列的小程式:

using System;
namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] yee = new int[5];
            for (int x = 0; x < 5; x ++)
            {
                yee[x] = x * 10;
            }
            foreach (int y in yee)
            {
                int x = y / 10;
                Console.WriteLine("Position {0}: {1}", x, y);
            }
        }
    }
}

跑出來的結果是這樣的:

Position 0: 0
Position 1: 10
Position 2: 20
Position 3: 30
Position 4: 40

C#陣列的概念(C# Arrays)
以下是幾個懂C#的人應該知道的概念(我不知道啦,教學說的www),詳細內容用下一篇講,不然感覺一篇塞太多東西了ˊˇˋ:

  • 多維陣列(multi-dimensional arrays)
  • 不規則陣列(jagged arrays)
  • 將陣列傳給函數(passing arrays to functions)
  • Param陣列(Param arrays)
  • Array類別(Array class)

這篇也遇到了之前常遇到的問題,就是看全英文的教學不曉得某些字該翻啥,不一樣的用法好多(ˊO w Oˋ) 這方面我是盡量統一中英用法~
篇幅比想像中長,決定劈成兩半,下一篇繼續寫有關C#陣列的東東


上一篇
Day 16:C#中可為Null的型別 (`フ´) #
下一篇
Day 18:C#的陣列(下)ᕕ( ᐕ )ᕗ
系列文
初心者學C#30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言